home *** CD-ROM | disk | FTP | other *** search
-
- MUS File Format
- ═══════════════
-
- Written by: Vladimir Arnost, QA-Software
- Date: August 10, 1995
- Version: 1.3
- Internet: xarnos00@dcse.fee.vutbr.cz
- FIDO: 2:423/36.2 (wladows@fidonet.at)
-
-
- 1. General Description
- ──────────────────────
-
- A .MUS file is a simple clone of .MID file. It uses the same instruments,
- similar commands and the same principle: a list of sound events.
- It consists of two parts: header and body.
-
-
- 2. MUS File Header
- ──────────────────
-
- The MUS header has the following structure:
-
- struct MUSheader {
- char ID[4]; // identifier "MUS" 0x1A
- WORD scoreLen;
- WORD scoreStart;
- WORD channels; // count of primary channels
- WORD sec_channels; // count of secondary channels
- WORD instrCnt;
- WORD dummy;
- // variable-length part starts here
- WORD instruments[];
- };
-
- NOTE: WORD is a 16-bit unsigned integer (little-endian)
-
- The header has two parts: the fixed-length and the variable-length part.
- The former contains file identifier, score start and length, number of
- channels and number of used instruments. The latter part is actually
- a list of used instruments. The instruments are stored as numbers which
- are arranged in this fashion:
-
- Instrument Number Meaning
- 0 - 127 standard MIDI instruments
- 135 - 181 standard MIDI percussions (notes 35 - 81)
-
- `scoreStart' is the absolute file position of the score and `scoreLen' is
- its length in bytes. Usage of 16-bit number as length limits .MUS file
- size to 64KB.
-
- `channels' tells you how many channels are utilized in the song. The
- channel number 15 (percussions) is not included in the sum.
-
-
- 3. MUS File Body
- ────────────────
-
- Unlike MID files, MUS body contains only one track. File body is
- a sequence of sound events and time records. A sound event consists of
- one or more bytes encoded as follows:
-
- 1st byte -- event descriptor:
- ╓──7─┬──6─┬──5─┬──4─┬──3─┬──2─┬──1─┬──0─╖
- ║Last│ Event type │ Channel number ║
- ╙────┴────┴────┴────┴────┴────┴────┴────╜
-
- `Event type' is one of these:
- 0 - release note
- 1 - play note
- 2 - pitch wheel (bender)
- 3 - system event (valueless controller)
- 4 - change controller
- 5 - ???
- 6 - score end
- 7 - ???
-
- `Channel number' determines which channel this event refers to.
- Channels provide only logical score division. Every channel
- carries its own settings (instrument #, panning, volume) and the
- channel number specifies only which settings to use. In general,
- the channel number itself is almost irrelevant and may be chosen
- arbitrarily within the interval 0 to 14. The only exception is
- the channel number 15, which is dedicated ONLY to percussions.
-
- `Last' - if set, the event is followed by time information. This
- means that this is the last event in a group of events which
- occur at the same time. The time information is a number of
- ticks to wait before processing next event. One tick is usually
- 1/140 sec (in Doom I, II and Heretic; Raptor uses 1/70 sec).
-
- Time information can be read in this way:
- 1. time = 0
- 2. READ a byte
- 3. time = time * 128 + byte AND 127
- 4. IF (byte AND 128) GO TO 2
- 5. RETURN time
- The time info is a series of 7-bit chunks. The 8th bit is set
- until the last byte whose 8th bit is zero. This scheme allows
- small numbers occupy less space than large ones.
-
- Event Type
- ────────────────────
- 0 Release note
- ╓─7─┬─6─┬─5─┬─4─┬─3─┬─2─┬─1─┬─0─╖
- ║ 0 │ Note number 0 - 127 ║
- ╙───┴───┴───┴───┴───┴───┴───┴───╜
-
- 1 Play note
- ╓─7─┬─6─┬─5─┬─4─┬─3─┬─2─┬─1─┬─0─╖ ╓─7─┬─6─┬─5─┬─4─┬─3─┬─2─┬─1─┬─0─╖
- ║Vol│ Note number 0 - 127 ║ ║ 0 │ Note volume 0 - 127 ║
- ╙───┴───┴───┴───┴───┴───┴───┴───╜ ╙───┴───┴───┴───┴───┴───┴───┴───╜
-
- `Note volume' is present only if `Vol' bit is set. Otherwise the
- previous value is used and the second byte is not present.
- NOTE: Each channel keeps track of its own last volume value.
- More than one note can be played at once in one channel.
- Channel 15 is dedicated to drums and percussions. `Note number'
- acts as an instrument selector there. See Appendix C
-
- 2 Pitch wheel
- ╓─7─┬─6─┬─5─┬─4─┬─3─┬─2─┬─1─┬─0─╖
- ║ Pitch wheel value ║
- ╙───┴───┴───┴───┴───┴───┴───┴───╜
-
- Sets pitch wheel (bender) value of a channel. Some handy values are
- shown in the table (all values in the range 0-255 can be used):
-
- ┌───────┬───────────────────────┐
- │ Value │ Pitch change │
- ├───────┼───────────────────────┤
- │ 0 │ two half-tones down │
- │ 64 │ one half-tone down │
- │ 128 │ normal (default) │
- │ 192 │ one half-tone up │
- │ 255 │ two half-tones up │
- └───────┴───────────────────────┘
-
- 3 System event
- ╓─7─┬─6─┬─5─┬─4─┬─3─┬─2─┬─1─┬─0─╖
- ║ 0 │ Number ║
- ╙───┴───┴───┴───┴───┴───┴───┴───╜
-
- Number MIDI ctrl Description
- 10 120 (78h) All sounds off
- 11 123 (7Bh) All notes off
- 12 126 (7Eh) Mono
- 13 127 (7Fh) Poly
- 14 121 (79h) Reset all controllers
-
- NOTE: The second column (MIDI ctrl) lists the corresponding MIDI
- controller number. It is not needed unless you want to
- convert MUS file data to MIDI.
-
- 4 Change controller
- ╓─7─┬─6─┬─5─┬─4─┬─3─┬─2─┬─1─┬─0─╖ ╓─7─┬─6─┬─5─┬─4─┬─3─┬─2─┬─1─┬─0─╖
- ║ 0 │ Controller number ║ ║ 0 │ Controller value ║
- ╙───┴───┴───┴───┴───┴───┴───┴───╜ ╙───┴───┴───┴───┴───┴───┴───┴───╜
-
- Number MIDI ctrl Description
- 0 N/A Instrument (patch, program) number
- 1 0 or 32 Bank select: 0 by default
- 2 1 (01h) Modulation pot
- 3 7 (07h) Volume: 0-silent, ~100-normal, 127-loud
- 4 10 (0Ah) Pan (balance) pot: 0-left, 64-center (default),
- 127-right
- 5 11 (0Bh) Expression pot
- 6 91 (5Bh) Reverb depth
- 7 93 (5Dh) Chorus depth
- 8 64 (40h) Sustain pedal (hold)
- 9 67 (43h) Soft pedal
-
- NOTE: MUS controller 0 has no equivalent MIDI controller, but
- is encoded as MIDI event 0Cxh--patch change (`x' is the
- channel number)
-
- 5 Unknown
- Not known what data (if any) this command takes.
-
- 6 Score end
- No data.
-
- Marks the end of score. Must be present at the end, otherwise the
- player may go off the rails. In DOOM this command restarts playing.
-
- 7 Unknown
- Not known what data (if any) this command takes.
-
-
- APPENDIX A - Note numbers
- ─────────────────────────
-
- ╔════════╦═════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╤════╗
- ║ Octave ║ C │ C# │ D │ D# │ E │ F │ F# │ G │ G# │ A │ A# │ B ║
- ╠════════╬═════╪════╪════╪════╪════╪════╪════╪════╪════╪════╪════╪════╣
- ║ 0 ║ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 10 │ 11 ║
- ║ 1 ║ 12 │ 13 │ 14 │ 15 │ 16 │ 17 │ 18 │ 19 │ 20 │ 21 │ 22 │ 23 ║
- ║ 2 ║ 24 │ 25 │ 26 │ 27 │ 28 │ 29 │ 30 │ 31 │ 32 │ 33 │ 34 │ 35 ║
- ║ 3 ║ 36 │ 37 │ 38 │ 39 │ 40 │ 41 │ 42 │ 43 │ 44 │ 45 │ 46 │ 47 ║
- ║ 4 ║ 48 │ 49 │ 50 │ 51 │ 52 │ 53 │ 54 │ 55 │ 56 │ 57 │ 58 │ 59 ║
- ║ 5 ║ 60 │ 61 │ 62 │ 63 │ 64 │ 65 │ 66 │ 67 │ 68 │ 69 │ 70 │ 71 ║
- ║ 6 ║ 72 │ 73 │ 74 │ 75 │ 76 │ 77 │ 78 │ 79 │ 80 │ 81 │ 82 │ 83 ║
- ║ 7 ║ 84 │ 85 │ 86 │ 87 │ 88 │ 89 │ 90 │ 91 │ 92 │ 93 │ 94 │ 95 ║
- ║ 8 ║ 96 │ 97 │ 98 │ 99 │100 │101 │102 │103 │104 │105 │106 │107 ║
- ║ 9 ║ 108 │109 │110 │111 │112 │113 │114 │115 │116 │117 │118 │119 ║
- ║ 10 ║ 120 │121 │122 │123 │124 │125 │126 │127 │ │ │ │ ║
- ╚════════╩═════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╧════╝
-
-
- APPENDIX B - Instrument Patch Map
- ─────────────────────────────────
-
- Block 0-7 PIANO Block 8-15 CHROM PERCUSSION
- 0 Acoustic Grand Piano 8 Celesta
- 1 Bright Acoustic Piano 9 Glockenspiel
- 2 Electric Grand Piano 10 Music Box
- 3 Honky-tonk Piano 11 Vibraphone
- 4 Rhodes Paino 12 Marimba
- 5 Chorused Piano 13 Xylophone
- 6 Harpsichord 14 Tubular-bell
- 7 Clavinet 15 Dulcimer
-
- Block 16-23 ORGAN Block 24-31 GUITAR
- 16 Hammond Organ 24 Acoustic Guitar (nylon)
- 17 Percussive Organ 25 Acoustic Guitar (steel)
- 18 Rock Organ 26 Electric Guitar (jazz)
- 19 Church Organ 27 Electric Guitar (clean)
- 20 Reed Organ 28 Electric Guitar (muted)
- 21 Accordion 29 Overdriven Guitar
- 22 Harmonica 30 Distortion Guitar
- 23 Tango Accordion 31 Guitar Harmonics
-
- Block 32-39 BASS Block 40-47 STRINGS
- 32 Acoustic Bass 40 Violin
- 33 Electric Bass (finger) 41 Viola
- 34 Electric Bass (pick) 42 Cello
- 35 Fretless Bass 43 Contrabass
- 36 Slap Bass 1 44 Tremolo Strings
- 37 Slap Bass 2 45 Pizzicato Strings
- 38 Synth Bass 1 46 Orchestral Harp
- 39 Synth Bass 2 47 Timpani
-
- Block 48-55 ENSEMBLE Block 56-63 BRASS
- 48 String Ensemble 1 56 Trumpet
- 49 String Ensemble 2 57 Trombone
- 50 Synth Strings 1 58 Tuba
- 51 Synth Strings 2 59 Muted Trumpet
- 52 Choir Aahs 60 French Horn
- 53 Voice Oohs 61 Brass Section
- 54 Synth Voice 62 Synth Brass 1
- 55 Orchestra Hit 63 Synth Bass 2
-
- Block 64-71 REED Block 72-79 PIPE
- 64 Soprano Sax 72 Piccolo
- 65 Alto Sax 73 Flute
- 66 Tenor Sax 74 Recorder
- 67 Baritone Sax 75 Pan Flute
- 68 Oboe 76 Bottle Blow
- 69 English Horn 77 Shakuhachi
- 70 Bassoon 78 Whistle
- 71 Clarinet 79 Ocarina
-
- Block 80-87 SYNTH LEAD Block 88-95 SYNTH PAD
- 80 Lead 1 (square) 88 Pad 1 (new age)
- 81 Lead 2 (sawtooth) 89 Pad 2 (warm)
- 82 Lead 3 (calliope) 90 Pad 3 (polysynth)
- 83 Lead 4 (chiffer) 91 Pad 4 (choir)
- 84 Lead 5 (charang) 92 Pad 5 (bowed glass)
- 85 Lead 6 (voice) 93 Pad 6 (metal)
- 86 Lead 7 (5th sawtooth) 94 Pad 7 (halo)
- 87 Lead 8 (bass & lead) 95 Pad 8 (sweep)
-
- Block 96-103 SYNTH EFFECTS Block 104-111 ETHNIC
- 96 FX 1 (rain) 104 Sitar
- 97 FX 2 (soundtrack) 105 Banjo
- 98 FX 3 (crystal) 106 Shamisen
- 99 FX 4 (atmosphere) 107 Koto
- 100 FX 5 (brightness) 108 Kalimba
- 101 FX 6 (goblin) 109 Bag Pipe
- 102 FX 7 (echo drops) 110 Fiddle
- 103 FX 8 (star-theme) 111 Shanai
-
- Block 112-119 PERCUSSIVE Block 120-127 SOUND EFFECTS
- 112 Tinkle Bell 120 Guitar Fret Noise
- 113 Agogo 121 Breath Noise
- 114 Steel Drums 122 Seashore
- 115 Woodblock 123 Bird Tweet
- 116 Taiko Drum 124 Telephone Ring
- 117 Melodic Tom 125 Helicopter
- 118 Synth Drum 126 Applause
- 119 Reverse Cymbal 127 Gun Shot
-
-
- APPENDIX C - Percussion Key Map
- ───────────────────────────────
-
- In channel #15, the note number does not affect the pitch but
- the instrument type. The default pitch for percussions is 60 (C-5).
-
- Note Instrument Note Instrument
-
- 35 Acoustic Bass Drum 59 Ride Cymbal 2
- 36 Bass Drum 60 High Bongo
- 37 Slide Stick 61 Low Bango
- 38 Acoustic Snare 62 Mute High Conga
- 39 Hand Clap 63 Open High Conga
- 40 Electric Snare 64 Low Conga
- 41 Low Floor Tom 65 High Timbale
- 42 Closed High-Hat 66 Low Timbale
- 43 High Floor Tom 67 High Agogo
- 44 Pedal High Hat 68 Low Agogo
- 45 Low Tom 69 Cabasa
- 46 Open High Hat 70 Maracas
- 47 Low-Mid Tom 71 Short Whistle
- 48 High-Mid Tom 72 Long Whistle
- 49 Crash Cymbal 1 73 Short Guiro
- 50 High Tom 74 Long Guiro
- 51 Ride Cymbal 1 75 Claves
- 52 Chinses Cymbal 76 High Wood Block
- 53 Ride Bell 77 Low Wood Block
- 54 Tambourine 78 Mute Cuica
- 55 Splash Cymbal 79 Open Cuica
- 56 Cowbell 80 Mute Triangle
- 57 Crash Cymbal 2 81 Open Triangle
- 58 Vibraslap
-